
When working with SQL, dealing with NULL values is something you can’t escape. Understanding how IS NULL works is critical to writing effective queries and avoiding potential pitfalls.
What Does NULL Mean in SQL?
Before diving into IS NULL, let’s clarify what NULL actually represents in SQL. Unlike zero (0) or an empty string (‘ ‘), NULL signifies the absence of a value. This means:
- It is not equivalent to zero or any other predefined value.
- Arithmetic operations involving
NULLresult inNULL. NULLdoes not equal any value, including itself.
Understanding IS NULL in SQL
The IS NULL operator is used to filter records where a column contains a NULL value. Since NULL does not behave like other values, the usual equality comparison (= NULL) will not work. Instead, SQL provides the IS NULL operator specifically for this purpose.
Basic Usage of IS NULL
Let’s look at a basic example of using IS NULL. Suppose we have a database table employees like this:
| id | name | |
|---|---|---|
| 1 | Alice | alice@example.com |
| 2 | Bob | NULL |
| 3 | Charlie | charlie@example.com |
If we want to find employees who do not have an email assigned, we use IS NULL like this:
SELECT * FROM employees WHERE email IS NULL;
The result set will include:
| id | name | |
|---|---|---|
| 2 | Bob | NULL |
Using IS NOT NULL
There are times when we need the opposite—fetching rows where the column has any value except NULL. This is achieved with IS NOT NULL:
SELECT * FROM employees WHERE email IS NOT NULL;
This will return:
| id | name | |
|---|---|---|
| 1 | Alice | alice@example.com |
| 3 | Charlie | charlie@example.com |
NULL in Conditional Expressions
A common misconception is that NULL values can be checked using comparison operators like = or <>. However, in SQL:
SELECT * FROM employees WHERE email = NULL;
The above query will return zero results, even though there is a NULL value in the column. This happens because in SQL, NULL = NULL is not TRUE — it’s UNKNOWN. Instead, always use:
SELECT * FROM employees WHERE email IS NULL;
Handling NULL with COALESCE and IFNULL
Sometimes, you might want to replace NULL values with a default. For this, you can use functions like COALESCE or IFNULL.
COALESCE(column_name, replacement_value): Returns the first non-NULLvalue from the list.IFNULL(column_name, replacement_value): MySQL-specific function that replacesNULLwith the given value.
Example:
SELECT name, COALESCE(email, 'No Email') AS email_info FROM employees;
This will return:
| name | email_info |
|---|---|
| Alice | alice@example.com |
| Bob | No Email |
| Charlie | charlie@example.com |
Common Mistakes with IS NULL
Many developers run into issues when dealing with NULL. Here are some common mistakes and how to avoid them:
- Using “column = NULL” instead of “IS NULL”
Always useIS NULLfor checkingNULLvalues. - Not accounting for NULL in calculations
Remember that any mathematical operation involvingNULLresults inNULL. - Forgetting to handle NULL in joins
NULLvalues can affectJOINoperations, leading to unexpected results.
Conclusion
Understanding how IS NULL works in SQL is crucial for writing correct queries, handling missing data, and avoiding logic errors. The key takeaways:
- Use
IS NULLto check for missing values. - Use
IS NOT NULLwhen filtering outNULLvalues. - Never use
= NULL, as it does not work as expected. - Use
COALESCEorIFNULLto handleNULLvalues gracefully.
By mastering these concepts, you can confidently work with NULL values in SQL and avoid common mistakes.
Other interesting article:
How NULLIF works in SQL? Best NULLIF examples